# ============================================================
# 1、字符串格式化问题
# 我叫xxx，我住在xxx，我今年xxx岁，我喜欢做xxx
# name = input("请输入你的名字：")
# address = input("请输入你的地址：")
# age = int(input("请输入你的年龄："))
# hobby = input("请输入你的爱好：")
# %s 字符串占位  万能的无敌的
# %d 整数占位
# %f 小数占位
# s = "我叫%s，我住在%s，我今年%d岁，我喜欢做%s" % (name, address, age, hobby)
# # print(s)
#
# s1 = "我叫{}，我住在{}，我今年{}岁，我喜欢做{}".format(name, address, age, hobby)
# # print(s1)
#
# # 以上格式化都不太好，和数据类型，顺序，内容都有关系
# # f-string  推荐用这种方式
# s2 = f"我叫{name}，我住在{address}，我今年{age}岁，我喜欢做{hobby}"
# print(s2)

# ============================================================
# 2.索引 和 切片
# 索引：按照某个特定位置提取元素，第几个第几个元素
# 字符串中，可以按照所以你的方式提取某一个字符（文字）
# a = "我叫周杰伦，你叫周润发吗"
# print(a[3])
# print(a[0])
# print(a[-1])

# 切片：从一个字符串中提取一部分内容，从哪儿切到哪儿
# 语法：s[start:end] 从 start 到 end 进行切片，但是取不到 end
# print(a[3:6])  # 从索引 3 位置进行切片，切到 6 结束，前闭后开
# print(a[0:5])
# print(a[:5])  # 如果 start 是从开始进行切片，可以省略
# print(a[5:])  # 如果 end 结尾，可以省略
# print(a[:])
# # : 如果左右两端为空白，表示开头或结尾
#
# print(a[-3:-1])  # 目前还是从左往右切片
# print(a[-1:-3])  # 没结果，这里是坑

# a = "我爱你"
# # 可以给切片添加步长来控制切片的方向，以上的第三个参数默认值都是 1
# print(a[::-1])  # 负号表示从右往左
# 语法：s[start:end:step]  从 start 开始切到 end ，每 step 个元素出来一个元素
# s = "abcdefghijklmn"
# print(s[3:8:2])
# print(s[2:11:3])
# print(s[-1:-10:-3])

# ============================================================
# 3.字符串的常规操作
# 字符串的操作，一般不会对原字符串产生影响，是不可变的，一般是返回一个新的字符串

# 3.1 字符串的大小写转换
# s = "python"
# s1 = s.capitalize() # 首字母变成大写
# print(s)
# print(s1)

# s = "I have a dream"
# s1 = s.title()  # 单词的首字母变成大写
# print(s1)

# s = "I HAVE A DREAM"
# s1 = s.lower()  # 把所有字母变成小写字母
# print(s1)

# s = "i have a dream"
# s1 = s.upper()  # 把所有字母变成大写字母   这个较为重要
# print(s1)
# # 如何忽略大小写进行判断
# code = "xad1"
# user_input = input(f"请输入验证码({code})：")
# # 把 code 和 用户输入的 都变成大写，即可忽略大小写问题
# if user_input.upper() == code.upper():
#     print("验证码正确")
# else:
#     print("验证码错误")



# 3.2 字符串的切割和替换和去除左右空格  *
# strip()
# s = "    你好，   我叫    周杰伦     "
# s1 = s.strip()  # 去掉字符串左右两端的空白，左右空格、\t、\n
# print(s1)
# 用户输入的内容都有可能的
# username = input("请输入你的名字：").strip()
# password = input("请输入密码：").strip()
# if username == "admin" and password == "123456":
#     print("登录成功")
# else:
#     print("登录失败")

# 字符串替换
# replace(old,new)
# s = "我叫  周杰伦，你是最  帅的  "
# s1 = s.replace("周杰伦", "史密哈")
# s2 = s1.replace(" ","") # 去掉所有空格
# print(s1)
# print(s2)

# 字符串切割，把一整段截掉
# split(用什么切割)
# s = "java_python_scrip_c"
# # lst = s.split("_")  #切割之后的结果会放在列表当中
# # print(lst)
# lst = s.split("_python_")
# print(lst)
# 用什么切割，就会损失掉谁，类似切木头一样

# replace()  split()   strip()   需要记住



#3.4 字符串的查找和判断
# 查找
# s = "你好啊，我叫史密哈"
# s1 = s.find("史密哈")  # 返回是-1就是没有该字符串出现
# print(s1)
# s1 = s.index("111")  # 如果报错就是没有
# print(s1)

# print("史密哈" in s)  # in 可以做条件上的判断，这个用的比较多
# for i in s:  # in 可以用到 for 循环
#     print(i)
# print("周润发" not in s)    # not in 判断是否不存在
#
# # 判断
# name = input("请输入你的名字：")
# if name.startswith("张"):  # 判断 以 xxx 开头，endwith()判读 以 xxx 结尾
#     print("你姓张")
# else:
#     print("你不姓张")

# isdigit() 判断字符串是否由整数组成

# startswith()、 isdigit()、 in 、 not in、  find()


# len()
# print(len(s))  # 字符串长度，内置函数，和 print()、type()一样

# join()
# s = "a_b_c_d_e"
# lst = s.split("_")
# print(lst)
#
# lst = ["a","b","c","d"]
# s = "_".join(lst)  # 通过字符串，把上边的元素连接起来。拼接一个列表中的内容为新的字符串
# print(s)







